package com.hongpu.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hongpu.domain.HpProjectWorkPayListDetail;
import com.hongpu.utils.ResultDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author Michael zhang
* @description 针对表【hp_project_work_pay_list_detail(hp_project_work_pay_list表中支付数据的明细表)】的数据库操作Service
* @createDate 2025-05-08 13:57:50
*/
public interface HpProjectWorkPayListDetailService extends IService<HpProjectWorkPayListDetail> {
    /**
     *  当支付数据的明细表中新增一条数据时，需要同时修改 hp_project_work_pay_list 中 paid 和 unpaid 的值
     */
    public boolean add(HpProjectWorkPayListDetail hpProjectWorkPayListDetail);
    /**
     *  当支付数据的明细表中删除一条数据时，需要同时修改 hp_project_work_pay_list 中 paid 和 unpaid 的值
     */
    public boolean delete(Long id);

    /**
     * 修改支付数据的明细表，需要同时修改 hp_project_work_pay_list 中 paid 和 unpaid 的值
     */
    public ResultDto update(HpProjectWorkPayListDetail hpProjectWorkPayListDetail);

    /**
     * 根据 hp_project_work_pay_list_id 查询 明细数据列表
     */
    public List<HpProjectWorkPayListDetail> getByHpProjectWorkPayListId(Long hpProjectWorkPayListId);

    /**
     *  将数据修改为不需要开票，且开票信息全置空
     */
    public boolean updateNotInvoice(Long payListId);

    /**
     *  将数据修改为需要开票
     */
    public boolean updateInvoice(HpProjectWorkPayListDetail hpProjectWorkPayListDetail);

    /**
     * 根据详细数据ID修改数据
     * @param hpProjectWorkPayListDetail
     * @return
     */
    public boolean updateInvoiceInfoById(HpProjectWorkPayListDetail hpProjectWorkPayListDetail);

    /**
     *  更新 hp_project_work_pay_list_detail 表中 it_has_been_invoiced 字段为 itHasBeenInvoiced
     */
    public boolean updateItHasBeenInvoiced(Long hpProjectWorkPayListId, Integer itHasBeenInvoiced);



    /**
     * 根据 hp_project_work_pay_list_id 查询开票信息
     */
    public HpProjectWorkPayListDetail getInvoiceInfoByHpProjectWorkPayListId(Long hpProjectWorkPayListId);


}
